<?php
/**
 * MerchantObject is used for information of one single merchant and its attributes.
 * 
 * ----------------------------------------
 * Bocheng C.           27.04.2013    create new class
 * 
 * LBB Solutions Oy 版权所有 @ 2013
 */
class MerchantObject {
	
	/**
	 * Format the price to a HTML string.
	 * 
	 * @param type $price
	 * @return type
	 */
	static function formatPrice($price) {
		$price = sprintf('%.2f', $price);
		$euro = substr($price, 0, -3);
		$cent = substr($price, -2);
		$symbol = (Yii::app()->language == 'fi_fi') ? ',' : '.';
		return '<span class="currency">€</span><span class="euro">' . $euro . $symbol . '</span><span class="cent">' . $cent . '</span>';
	}
	
	/**
	 * Format the discount to a HTML string.
	 * 
	 * @param type $price
	 * @return type
	 */
	static function formatDiscount($discount) {
		$percent = round($discount * 100);
		return '<span class="euro">-' . $percent . '%</span>';
	}
	
	static function formatPhoneNumber($phone_number) {
		return str_replace(array(' ', '-'), '', $phone_number);
	}
	
	/**
	 * Return categories array.
	 * @return type
	 */
	static function Categories() {
		return array(
			'arts,culture' => BUtils::T('arts,culture'),
			'food,drink' => BUtils::T('food,drink'),
			'health,beauty' => BUtils::T('health,beauty'),
			'exercise,sports' => BUtils::T('exercise,sports'),
			'entertainment,recreation' => BUtils::T('entertainment,recreation'),
			'fashion,shopping' => BUtils::T('fashion,shopping'),
			'restaurants' => BUtils::T('restaurants'),
			'electronics,appliances' => BUtils::T('electronics,appliances'),
			'services' => BUtils::T('services'),
			'others' => BUtils::T('others'),
		);
	}
	
	static function Subcategories($category_key) {
		$subarray = array();
		switch (strtolower($category_key)) {
			case 'restaurants':
				$keys = 'bar_lounge,barbeque,brasseries,buffets,cafeteria,creperies,fast_food,fish_chips,fondue,food_court,food_stands,home_made,hot_dogs,pizza,pubs,salad,sandwiches,seafood,soup,steak,sushi,tapas,vegetarian,breakfast,brunch,lunch,dinner,bakery,late_night,american,asian,chinese,european,finnish,french,fusion,greek,indian,international,italian,japanese,korean,lebanese,mediterranean,mexican,middle_eastern,nepalese,nordic,russian,scandinavian,south_american,spanish,thai,turkish';
				foreach (explode(',', $keys) as $key) {
					$subarray[$key] = BUtils::T($key);
				}
				break;
			case 'food,drink':
				$keys = 'bagels,bakeries,beer_and_wine,bubbletea,butcher,coffee_tea,delicatessen,desserts,farmersmarket,foodtrucks,grocery,icecream,internetcafe,juicebars,organic_stores,streetvendors,tea_room';
				foreach (explode(',', $keys) as $key) {
					$subarray[$key] = BUtils::T($key);
				}
				break;
			case 'health,beauty':
				$keys = 'barbers,eyelashservice,hair_salons,makeupartists,massage,medicalspa,nailsalons,pharmacy,skincare,spas,tattoo';
				foreach (explode(',', $keys) as $key) {
					$subarray[$key] = BUtils::T($key);
				}
				break;
			case 'fashion,shopping':
				$keys = 'art_store,bookstore,clothing_store,kiosk,children_store,flower_shop';
				foreach (explode(',', $keys) as $key) {
					$subarray[$key] = BUtils::T($key);
				}
				break;
			case 'arts,culture':
				$keys = 'arcades,casinos,castles,choirs,galleries,gardens,movietheaters,museums,musicvenues,opera,stadiumsarenas,theater';
				foreach (explode(',', $keys) as $key) {
					$subarray[$key] = BUtils::T($key);
				}
				break;
			case 'services':
				$keys = 'auto_maintenance,hotel,meeting_room_rent';
				foreach (explode(',', $keys) as $key) {
					$subarray[$key] = BUtils::T($key);
				}
				break;
			case 'entertainment,recreation':
				$keys = 'bar_lounge,casinos,champagne_bars,cocktailbars,danceclubs,dancerestaurants,hotel_bar,movietheaters,musicvenues,irish_pubs,jazzandblues,karaoke,opera,theater,poolhalls,pubs,wine_bars';
				foreach (explode(',', $keys) as $key) {
					$subarray[$key] = BUtils::T($key);
				}
				break;
		}
		return $subarray;
	}
	
	public static function DetailFeaturesKeys() {
		return array('cuisine_style', 'cuisine_type', 'meal_served', 
			'payment_options', 'service_languages', 'alcohol_license', 
			'dining_ambience', 'car_parking', 'additional_details');
	}
	
	public static function HtmlDetailFeatures($aTags) {
		$tags_html = '';
		$keys = self::DetailFeaturesKeys();
		foreach ($keys as $key) {
			if (!empty($aTags[$key])) {
				$string = '';
				$array = explode(',', $aTags[$key]);
				foreach ($array as $item) {
					$string .= '<span class="badge label-yellow">' . BUtils::T($item) . '</span> ';
				}
				$tags_html .= '<ul class="unstyled the-icons"><li><i class="icon-star-empty"></i> <span>' . BUtils::T($key . '_lbl') . ':</span>
					<div style="margin-left:16px;">'.$string.'</div></li></ul>';
			}
		}
		return $tags_html;
	}
	
	/**
	 * 
	 * @param array $offer_hours
	 */
	public static function HtmlOfferTimeForm($offer_hours) {
		$hours_array1 = BUtils::AllHour24();
		$hours_array2 = $hours_array1;
		$aWeekDays = BUtils::WeekDayKeys(7, true);
		$html = '<table class="time-options">';
		foreach ($offer_hours as $i => $hour) {
			$sWeekday = $aWeekDays[$i];
			$html .= '<tr>';
			$html .= '<td><label>' . CHtml::checkBox("day[{$i}]", !empty($hour['start_hour']), array('data-i'=>$i, 'data-week'=>$sWeekday)) . ' ' . $sWeekday . '</label></td>';
			$html .= '<td>' . CHtml::dropDownList("hour[{$i}][start]", $hour['start_hour'], $hours_array1, array('style'=>'width:auto;')) . '</td>';
			$html .= '<td>' . CHtml::dropDownList("hour[{$i}][end]", $hour['end_hour'], $hours_array2, array('style'=>'width:auto;')) . '</td>';
			$html .= '</tr>';
		}
		return $html . '</table>';
	}
	
	/**
	 * Return a html strting for offer hours.
	 * @param array $aHours Hours data from DB
	 * @param array $aWeekDays 7 Weekdays data
	 * @param array $a24Hours 24 hours data
	 * @return string HTML
	 */
	public static function HtmlOfferHours($aHours, $aWeekDays, $a24Hours) {
		$hours_html = '';
		if (!empty($aHours)) {
			//set open hours display style
			$sWeekBuffer = array();
			foreach ($aHours as $week_no => $v) {
				if ($v['start_hour'] !== null) {
					$sWeekday = $aWeekDays[$week_no];
					$sHours = $a24Hours[$v['start_hour']] . ' - ' . $a24Hours[$v['end_hour']];
					$sWeekBuffer[$sHours][] = $week_no;//add the current week day
				}
			}
			$i = 0;
			foreach ($sWeekBuffer as $key => $v) {
				$size = count($v);
				if ($size > 1) $sWeekday = $aWeekDays[$v[0]] . '-' . $aWeekDays[$v[$size-1]];
				else $sWeekday = $aWeekDays[$v[0]];
				$hours_html .= '<li><span class="weekday">'.$sWeekday.'</span> <span class="hours">'.$key.'</span></li>';
			}
		}
		return empty($hours_html) ? '' : '<ul class="unstyled the-icons">' . $hours_html . '</ul>';
	}
	
	/**
	 * Return a html strting for offer hours.
	 * @param array $aHours Hours data from DB
	 * @param array $aWeekDays 7 Weekdays data
	 * @param array $a24Hours 24 hours data
	 * @return string HTML
	 */
	public static function HtmlOfferHoursForm($aHours, $aWeekDays, $a24Hours) {
		$hours_html = '';
		if (!empty($aHours)) {
			foreach ($aHours as $week_no => $v) {
				if ($v['start_hour'] !== null) {
					$sWeekday = $aWeekDays[$week_no];
					$sHours = $a24Hours[$v['start_hour']] . ' - ' . $a24Hours[$v['end_hour']];
					$hidValue = $week_no . ',' . $v['start_hour'] . ',' . $v['end_hour'];
					$hours_html .= '
						<div class="item">
							<span class="weekday">'.$sWeekday.'</span>
							<span class="hours">'.$sHours.'</span>
							<a href="javascript:;" class="remove-hours">'.BUtils::T('delete_btn').'</a>
							<input type="hidden" value="'.$hidValue.'" name="offer_hours['.$week_no.']" />
						</div>';
				}
			}
		}
		return empty($hours_html) ? '' : '<ul class="unstyled the-icons">' . $hours_html . '</ul>';
	}
	
	/**
	 * Return a html strting for business hours.
	 * @param array $aHours Hours data from DB
	 * @param array $aWeekDays 7 Weekdays data
	 * @param array $a24Hours 24 hours data
	 * @return string HTML
	 */
	public static function HtmlBusinessHours($aHours, $aWeekDays, $a24Hours) {
		$hours_html = '';
		if (!empty($aHours)) {
			//set open hours display style
			$sWeekBuffer = array();
			foreach ($aHours as $v) {
				$sWeekday = $aWeekDays[$v['week_no']];
				$sHours = $a24Hours[$v['open_hour']] . ' - ' . $a24Hours[$v['close_hour']];
				$sWeekBuffer[$sHours][] = $v['week_no'];//add the current week day
			}
			$i = 0;
			foreach ($sWeekBuffer as $key => $v) {
				$size = count($v);
				if ($size > 1) $sWeekday = $aWeekDays[$v[0]] . '-' . $aWeekDays[$v[$size-1]];
				else $sWeekday = $aWeekDays[$v[0]];
				$icon = ($i++ === 0) ? '<li><i class="icon-time"></i>' : '<li><i class="icon-time white"></i>';
				$hours_html .= $icon . ' <span class="weekday">'.$sWeekday.'</span> <span class="hours">'.$key.'</span></li>';
			}
		}
		return empty($hours_html) ? '' : '<ul class="unstyled the-icons">' . $hours_html . '</ul>';
	}
	
	/**
	 * Check if there is Chinese chars in caption and terms
	 * @param array $program ['caption'],['terms']
	 */
	static function IsChineseInProgramTerms($program) {
		foreach ($program as $item) {
			if (1 === preg_match("/\p{Han}+/u", $item)) return true;
		}
		return false;
	}
	
	static function BusinessAreas() {
		$array = array();
		$array['helsinki'] = array(
'Ala-Malmi',
'Alppiharju',
'Arabianranta',
'Aurinkolahti',
'Eira',
'Etelä-Haaga',
'Etu-Töölö',
'Hakuninmaa',
'Haltiala',
'Heikinlaakso',
'Hermanni',
'Herttoniemi',
'Itä-Pasila',
'Itäkeskus',
'Jakomäki',
'Jätkäsaari',
'Kaartinkaupunki',
'Kaivopuisto',
'Kallahti',
'Kallio',
'Kamppi',
'Kannelmäki',
'Karhusaari',
'Katajanokka',
'Keski-Pasila',
'Keski-Vuosaari',
'Kivihaka',
'Kivikko',
'Kluuvi',
'Konala',
'Kontula',
'Koskela',
'Kruununhaka',
'Kulosaari',
'Kumpula',
'Kuninkaantammi',
'Kurkimäki',
'Kuusisaari',
'Käpylä',
'Laajasalo',
'Laakso',
'Landbo',
'Lapinlahti',
'Lassila',
'Lauttasaari',
'Lehtisaari',
'Länsi-Pasila',
'MalmiLentokenttä',
'Malminkartano',
'Marjaniemi',
'Maununneva',
'Meilahti',
'Mellunmäki',
'Meri-Rastila',
'Munkkiniemi',
'Munkkisaari',
'Munkkivuori',
'Mustikkamaa-Korkeasaari',
'Myllypuro',
'Niemenmäki',
'Niinisaari',
'NordsjöKartano',
'Oulunkylä',
'Pakila',
'Paloheinä',
'Pihlajamäki',
'Pihlajisto',
'Pitäjänmäki',
'Pohjois-Haaga',
'Pohjois-Pasila',
'Puistola',
'Pukinmäki',
'Punavuori',
'Puotila',
'Puotinharju',
'Puroniitty',
'Rastila',
'Roihupelto',
'Ruoholahti',
'Ruskeasuo',
'Salmenkallio',
'Santahamina',
'Suomenlinna',
'Suutarila',
'Sörnäinen',
'Taka-Töölö',
'Talinranta',
'Talosaari',
'Tammisalo',
'Tapanila',
'Tattariharju',
'Tattarisuo',
'Torpparinmäki',
'Toukola',
'Tuomarinkartano',
'Ullanlinna',
'Uutela',
'Vallila',
'Vanhakaupunki',
'Vartioharju',
'Vesala',
'Viikki',
'Ylä-Malmi',
'Östersundom',
		);
		$array['espoo'] = array(
'Espoon Keskus',
'Espoonkartano',
'Espoonlahti',
'Gumböle',
'Haukilahti',
'Henttaa',
'Högnäs',
'Järvenperä',
'Kaitaa',
'Kalajärvi',
'Karakallio',
'Karhusuo',
'Karvasmäki',
'Kauklahti',
'Kaupunginkallio',
'Kilo',
'Kolmperä',
'Kunnarla',
'Kurttila',
'Kuurinniitty',
'Laajalahti',
'Laaksolahti',
'Lahnus',
'Lakisto',
'Latokaski',
'Leppävaara',
'Lintuvaara',
'Lippajärvi',
'Luukki',
'Mankkaa',
'Matinkylä',
'Muurala',
'Niipperi',
'Niittykumpu',
'Nupuri',
'Nuuksionpää',
'Nöykkiö',
'Olari',
'Otaniemi',
'Perusmäki',
'Pohjois-Tapiola',
'Puotinen',
'Ruukinranta',
'Röylä',
'Saunalahti',
'Sepänkylä',
'Siikajärvi',
'Soukka',
'Suurpelto',
'Suvisaaristo',
'Tapiola',
'Vanhakartano',
'Vanttila',
'Velskola',
'Viherlaakso',
'Westend',
'Ymmersta',
		);
		$array['vantaa'] = array(
'Askisto',
'Asola',
'Hakkila',
'Hakunila',
'Havukoski',
'Helsingin Pitäjän Kirkonkylä',
'Hiekkaharju',
'Hämeenkylä',
'Hämevaara',
'Ilola',
'Itä-Hakkila',
'Jokiniemi',
'Jokivarsi',
'Kaivoksela',
'Keimola',
'Kiila',
'Kivistö',
'Koivuhaka',
'Koivukylä',
'Korso',
'Kuninkaala',
'Kuninkaanmäki',
'Lapinkylä',
'Lentokenttä',
'Leppäkorpi',
'Linnainen',
'Luhtaanmäki',
'Länsimäki',
'Länsisalmi',
'Martinlaakso',
'Matari',
'Metsola',
'Mikkola',
'Myllymäki',
'Myyrmäki',
'Nikinmäki',
'Ojanko',
'Pakkala',
'Petikko',
'Piispankylä',
'Päiväkumpu',
'Rajakylä',
'Rekola',
'Riipilä',
'Ruskeasanta',
'Seutula',
'Simonkylä',
'Sotunki',
'Tammisto',
'Tikkurila',
'Vaarala',
'Vallinoja',
'Vantaanlaakso',
'Vapaala',
'Varisto',
'Veromies',
'Vestra',
'Viertola',
'Vierumäki',
'Viinikkala',
'Ylästö',
		);
		$array['turku'] = array(
'Artukainen',
'Autistenaukio-Oikotie',
'Etelä-Paattinen',
'Friskala',
'Haarla',
'Halinen',
'Harittu',
'Hepokulta',
'Huhkola',
'Huhtaraivio',
'Härkämäki-Jyrkkälä',
'Ikkala-Tortinmäki',
'Illoinen',
'Ilpoinen',
'Impivaara',
'Iso-Heikkilä',
'Ispoinen',
'Itäharju',
'Itäranta',
'Jänessaari',
'Kaerla',
'Kaistarniemi',
'Kakola',
'Kakskerta',
'Kastu',
'Katariina',
'Kauppatori',
'Kohmo',
'Koivula',
'Koroinen',
'Korppolainen',
'Korppolaismäki',
'Kristiinankatu',
'Kukola',
'Kupittaa',
'Kurala',
'Kurjenmäki',
'Kuuvuori',
'Kähäri',
'Kärsämäki',
'Lauste',
'Lauttaranta',
'Lentokenttä',
'Luolavuori',
'Länsi-Maaria-Jäkärlä',
'Länsikeskus',
'Länsinummi',
'Länsiranta',
'Maanpää',
'Majakkaranta',
'Martti',
'Metsäkylä',
'Moikoinen',
'Moisio-Kanervamäki',
'Muhkuri',
'Mäntymäki',
'Nummenmäki',
'Nättinummi',
'Oriketo',
'Oriniemi',
'Orjasmäki',
'Otkantti',
'Paaskunta',
'Pahaniemi',
'Pansio',
'Papinsaari',
'Peltola',
'Perno',
'Pihlajaniemi',
'Pikisaari',
'Pitkämäki',
'Pläkkikaupunki',
'Pohjola',
'Port Arthur',
'Puistomäki',
'Puolalanmäki',
'Pääskyvuori',
'Rahti-Satama',
'Rauhankatu',
'Raunistula',
'Ruissalo',
'Runosmäki',
'Ruohonpää',
'Räntämäki',
'Samppalinna',
'Saramäki-Paimala',
'Satava',
'Sirkkala',
'Skanssi',
'Suikkila',
'Särkilahti',
'Telakka',
'Toijainen',
'Tuurepori',
'Uittamo',
'Urheilupuisto',
'Ursininkatu',
'Vaala',
'Varissuo',
'Vartiovuori',
'Vasaramäki',
'Vatsela',
'Verkatehdas',
'Virusmäki-Raunistula',
'Vr-Iso-Heikkilä',
'Vähäheikkilä',
'Vätti',
'Yliopisto',
'Yo-Kylä',
		);
		$array['tampere'] = array(
'Aakkula',
'Aitoniemi',
'Amuri',
'Atala',
'Epilä',
'Epilänharju',
'Finlayson',
'Haihara',
'Hakametsä',
'Hallila',
'Hankkio',
'Hatanpää',
'Haukiluoma',
'Hervanta',
'Hervantajärvi',
'Holvasti',
'Huikas',
'Hyhky',
'Härmälä',
'Ikuri',
'Jokipohja',
'Juhannuskylä',
'Järvensivu',
'Kaakinmaa',
'Kaarila',
'Kaleva',
'Kalevanharju',
'Kalevanrinne',
'Kalkku',
'Kaukajärvi',
'Kauppi',
'Kissanmaa',
'Koivistonkylä',
'Korkinmäki',
'Kumpula',
'Kyttälä',
'Kämmenniemi',
'Lahdesjärvi',
'Lakalaiva',
'Lamminpää',
'Lapinniemi',
'Lappi',
'Leinola',
'Lentävänniemi',
'Lielahti',
'Liisankallio',
'Linnainmaa',
'Lintulampi',
'Lukonmäki',
'Messukylä',
'Multisilta',
'Muotiala',
'Myllypuro',
'Nalkala',
'Nekala',
'Niemi',
'Niihama',
'Nirva',
'Nurmi',
'Ojala',
'Olkahinen',
'Osmonmäki',
'Pappila',
'Peltolammi',
'Petsamo',
'Pispala',
'Pohtola',
'Polso',
'Pyynikinrinne',
'Pyynikki',
'Rahola',
'Rantaperkiö',
'Ratina',
'Rautaharkko',
'Ristimäki',
'Ristinarkku',
'Ruotula',
'Rusko',
'Ryydynpohja',
'Santalahti',
'Sarankulma',
'Sorila',
'Särkänniemi',
'Taatala',
'Tahmela',
'Takahuhti',
'Tammela',
'Tammerkoski',
'Tampella',
'Tasanne',
'Terälahti',
'Tesoma',
'Tohloppi',
'Tulli',
'Turtola',
'Uusikylä',
'Vehmainen',
'Veisu',
'Velaatta',
'Vihioja',
'Viiala',
'Viinikka',
'Viitapohja',
'Villilä',
'Vuohenoja',
'Vuores',
		);
		return $array;
	}
}
